import { Entity, PrimaryGeneratedColumn, Column, OneToOne } from 'typeorm';
import { Exclude } from 'class-transformer';
import { IdCard } from './id_card.entity';

@Entity({
  name: 'store_user', // 表名
  database: 'store_web_project', // 数据库名
  comment: '用户表',
})
export class UseDb {
  @PrimaryGeneratedColumn({
    comment: '用户ID',
    type: 'int',
  })
  id: number;

  @Column({
    name: 'username',
    length: 32,
    type: 'varchar',
    comment: '用户名',
  })
  username: string;

  @Column({
    name: 'password',
    length: 200,
    type: 'varchar',
    comment: '密码',
  })
  @Exclude() // 排除在序列化之外
  password: string;

  @Column({
    name: 'userType',
    type: 'int',
    comment: '用户类型 0 管理员 1 普通用户',
  })
  userType: number;

  @Column({
    name: 'email',
    length: 255,
    type: 'varchar',
    comment: '邮箱',
  })
  email: string;

  @Column({
    name: 'avatar',
    length: 255,
    type: 'varchar',
    comment: '头像',
  })
  avatar: string;

  @Column({
    name: 'desc',
    length: 255,
    type: 'varchar',
    comment: '描述',
  })
  desc: string;

  // 一对一关系 一个用户对应一个身份证 (表中实际是没有这个字段的，如果要在实体中表示这个关系，需要在 IdCard 实体中添加一个 user_id 字段)
  @OneToOne(() => IdCard, (idCard) => idCard.user)
  idCard: IdCard;
}
